%------------------------------------------------------------------------
% Program in which {p,q} should fail while {r} should succeed.
% Needs negative simplification (for the answer of r).
%------------------------------------------------------------------------

:- table p/0, q/0, r/0.

p :- tnot(q), fail.
p :- tnot(r), fail.

q :- p.

r :- tnot(p).

%------------------------------------------------------------------------

test :- p, fail.
test :-
        ( p ->
	    ( tnot(p) -> writeln('p is undefined') ; writeln('p is true') )
	; writeln('p is false (OK)') ),
        ( q ->
	    ( tnot(q) -> writeln('q is undefined') ; writeln('q is true') )
	; writeln('q is false (OK)') ),
        ( r ->
	    ( tnot(r) -> writeln('r is undefined') ; writeln('r is true (OK)') )
	; writeln('r is false') ).
